/**
 * <p>Copyright:Copyright(c) 2019</p>
 * <p>Company:Professional</p>
 * <p>Package:com.cesgroup.zw.spring.boot.charts.supports</p>
 * <p>File:Json.java</p>
 * <p>类更新历史信息</p>
 * @todo chanlong(陈龙) 创建于 May 8, 2019 5:33:14 PM
 */
package com.cesgroup.zw.spring.boot.charts.model;

import java.io.Serializable;

import com.cesgroup.zw.spring.boot.echarts.enums.BlendMode;
import com.cesgroup.zw.spring.boot.echarts.enums.Easing;

/**
 * <p>描述: 配置项</p>
 * <p>Company: Professional</p>
 * @author chanlong(陈龙)
 * @date May 8, 2019 5:33:14 PM
 * @version 1.0.2019
 */
public interface IOption extends Serializable {
	
	default Object getComponent(IComponent... components) {
		return components !=null && components.length == 1 ? components[0] : components;
	}

	void setTitle(IComponent... titles);

	void setLegend(IComponent... legends);
	
	void setGrid(IComponent... grids);

	void setXAxis(IComponent... xAxis);

	void setYAxis(IComponent... yAxis);

	void setPolar(IComponent... polar);

	void setRadiusAxis(IComponent... radiusAxis);

	void setAngleAxis(IComponent... angleAxis);

	void setRadar(IComponent... radar);

	void setDataZoom(IComponent... dataZoom);

	void setVisualMap(IComponent... visualMap);

	void setTooltip(IComponent tooltip);

	void setAxisPointer(IComponent axisPointer);

	void setToolbox(IComponent toolbox);

	void setBrush(IComponent brush);

	void setGeo(IComponent... geos);

	void setParallel(IComponent... parallel);
	
	void setParallelAxis(IComponent... parallelAxis);

	void setSingleAxis(IComponent... singleAxis);

	void setTimeline(IComponent timeline);

	void setGraphic(IComponent... graphics);

	void setCalendar(IComponent... calendars);

	void setDataset(IComponent... dataset);

	void setAria(IComponent aria);

	void setSeries(IComponent... series);
	
	void setTextStyle(IComponent textStyle);

	void setColor(Object color);

	void setBackgroundColor(Object backgroundColor);
	
	void setAnimation(Boolean animation);
	
	void setAnimationThreshold(Integer threshold);

	void setAnimationDuration(Integer duration);

	void setAnimationDurationUpdate(Object durationUpdate);
	
	void setAnimationEasing(Easing easing);

	void setAnimationEasingUpdate(Easing easingUpdate);

	void setAnimationDelay(Integer delay);
	
	void setAnimationDelayUpdate(Integer delayUpdate);

	void setBlendMode(BlendMode blendMode);

	void setHoverLayerThreshold(Integer threshold);

	void setUseUTC(Boolean useUTC);
}
